import akshare as ak
import pandas as pd
from tqdm import tqdm  # 用于显示进度

# 获取所有行业板块名称
industry_df = ak.stock_board_industry_name_em()
industry_names = industry_df["板块名称"].tolist()  # 确认列名是否正确

# 设置日期范围
start_date = "20250404"
end_date = "20250411"

# 存储所有板块历史数据
all_industry_data = []

for name in tqdm(industry_names):
    try:
        hist_df = ak.stock_board_industry_hist_em(
            symbol=name, start_date=start_date, end_date=end_date
        )
        hist_df["板块名称"] = name  # 添加板块名称列
        all_industry_data.append(hist_df)
    except Exception as e:
        print(f"获取板块 {name} 数据失败: {e}")

# 合并数据
combined_df = pd.concat(all_industry_data, ignore_index=True)

# 提取关键字段并转换日期格式
combined_df["日期"] = pd.to_datetime(combined_df["日期"]).dt.strftime("%Y-%m-%d")

# 按日期和涨跌幅排序，获取每日前10板块
daily_top10 = (
    combined_df.groupby("日期")
    .apply(lambda x: x.nlargest(10, "涨跌幅"))
    .reset_index(drop=True)
)

# 查看结果
print(daily_top10[["日期", "板块名称", "涨跌幅"]])

# # 1. 获取热门板块列表（示例：行业板块）
# industry_list = ak.stock_board_industry_name_em()["板块名称"].tolist()

# 2. 获取某个板块的成分股（以"半导体及元件"板块为例）
symbol = "软件开发"
cons_df = ak.stock_board_industry_cons_em(symbol=symbol)
print(f"板块 '{symbol}' 的成分股：")
print(cons_df)
# 3. 筛选龙头股（按市值、涨跌幅、成交量综合筛选）
# 假设龙头股为市值排名前3的个股
cons_df["成交额"] = cons_df["成交额"].astype(float)
dragon_stocks = cons_df.nlargest(3, "成交额")[["代码", "名称", "成交额", "涨跌幅"]]

print(f"板块 '{symbol}' 的龙头个股：")
print(dragon_stocks)

print(f"板块 锂电池 的龙头个股：")
concept_name = "锂电池"
concept_df = ak.stock_board_concept_cons_em(symbol=concept_name)
print("锂电池板块成分股：")
print(concept_df)
# 提取标记为"龙头"的个股
dragon_stocks = concept_df[concept_df["是否龙头"] == "是"][["代码", "名称", "涨跌幅"]]

print(f"概念板块 '{concept_name}' 的龙头个股：")
print(dragon_stocks)
